概述
微服务架构的系统中通常会包含很多个服务,服务间采用HTTP通信,当某个微服务不可用时,很容易导致级联故障,即雪崩效应,因此在服务间进行调用时,需要一定的容错机制,Hystrix就是一个实现了调用超时和断路器的容错组件。
Feign中已经集成了Hystrix,本篇以user-ms为例,添加对role-ms调用的熔断处理。
Hystrix配置
修改user-ms配置文件,添加如下配置,启用feign下的hystrix:
1 | feign: |
添加回退处理
创建一个熔断后退处理类,其需要实现feign接口,如下所示:
1 |
|
修改FeignClient接口,添加fallback配置,如下所示:
1 | "role-ms", fallback = RoleFeignClientFallback.class) (name = |
至此,熔断回退处理就添加完成了,在不启动role-ms(role-ms崩溃)的情况下,user-ms调用role-ms服务,则会返回Fallback类中的数据。
检查回退原因
创建一个熔断后退处理工厂类,其需要实现FallbackFactory接口,如下所示:
1 |
|
修改FeignClient接口,添加fallbackFactory配置,如下所示:
1 | "role-ms", fallbackFactory = RoleFeignClientFallbackFactory.class) (name = |
在不启动role-ms(role-ms崩溃)的情况下,user-ms调用role-ms服务,则会返回 com.netflix.client.ClientException: Load balancer does not have available server for client: role-ms,这样使用FallbackFactory可以更灵活的控制返回数据。
注意:当fallback和fallbackFactory同时配置时,会优先使用fallback。
本篇的配置和测试都比较简单,这里就不贴测试结果了。
源码地址:https://github.com/GreedyStar/yogurt
最后的最后,安利一下自己写的一个Java代码生成工具,能够方便的生成Spring、SpringMVC、Mybatis架构下的Java代码,希望能对大家有所帮助,地址:Java代码生成器:Generator